package com.guomao.topic;

import com.guomao.util.ConnectionUtil;
import com.rabbitmq.client.*;

import java.io.IOException;  
  
/**
 * 消费者示例类
 * 用于从RabbitMQ队列中接收消息
 */
public class Consumer2 {
  
    /**
     * 程序入口方法
     * @param args 命令行参数
     * @throws Exception 可能抛出的异常
     */
    public static void main(String[] args) throws Exception {
  
        // 获取RabbitMQ连接
        Connection connection = ConnectionUtil.getConnection();
  
        // 创建频道
        Channel channel = connection.createChannel();
  
        // 定义队列名称
        String QUEUE_NAME = "test_topic_queue2";
  
        // 声明队列，参数分别为：队列名、是否持久化、是否独占、是否自动删除、额外参数
        channel.queueDeclare(QUEUE_NAME,true,false,false,null);
  
        // 创建消费者
        Consumer consumer = new DefaultConsumer(channel){
  
            /**
             * 重写消息处理方法
             * @param consumerTag 消费者标签
             * @param envelope 信封信息，包含消息属性
             * @param properties 消息属性
             * @param body 消息内容
             * @throws IOException 可能抛出的IO异常
             */
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {  
  
                // 打印接收到的消息内容
                System.out.println("body："+new String(body));
  
            }  
  
        };  
  
        // 开始消费消息，参数分别为：队列名、是否自动确认、消费者
        channel.basicConsume(QUEUE_NAME,true,consumer);
  
    }  
  
}